home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / lalr.lha / lalr / src / Infos.mi < prev    next >
Text File  |  1992-08-18  |  3KB  |  87 lines

  1. (* print some informations about the generation *)
  2.  
  3. (* $Id: Infos.mi,v 1.3 1992/08/07 15:22:49 grosch rel $ *)
  4.  
  5. (* $Log: Infos.mi,v $
  6.  * Revision 1.3  1992/08/07  15:22:49  grosch
  7.  * allow several scanner and parsers; extend module Errors
  8.  *
  9.  * Revision 1.2  1991/11/21  14:53:14  grosch
  10.  * new version of RCS on SPARC
  11.  *
  12.  * Revision 1.1  90/06/12  16:54:21  grosch
  13.  * renamed main program to lalr, added { } for actions, layout improvements
  14.  * 
  15.  * Revision 1.0     88/10/04  14:36:26  vielsack
  16.  * Initial revision
  17.  * 
  18.  *)
  19.  
  20. IMPLEMENTATION MODULE Infos;
  21.  
  22. FROM Automaton    IMPORT ProdCount, ProdIndex, ItemIndex, StateIndex;
  23. FROM Compress    IMPORT Filling, TableSize, NFilling, NTableSize;
  24. FROM Gen    IMPORT FirstReadState, LastReadState, LastTerminal,
  25.             FirstReduceState, LastReduceState,
  26.             FirstReadNonTermState, LastReadNonTermState,
  27.             FirstReadTermState, LastReadTermState;
  28. FROM IO        IMPORT WriteS, WriteI, WriteNl, tFile;
  29. FROM Memory    IMPORT MemoryUsed;
  30. FROM SYSTEM    IMPORT TSIZE, WORD;
  31. FROM Times    IMPORT CpuTime;
  32. FROM TokenTab    IMPORT MINTerm, MAXTerm, MINNonTerm, MAXNonTerm;
  33.  
  34.   PROCEDURE WriteInfo (f: tFile);
  35.  
  36.   (* Ausgabe von statistischen Informationen auf file 'f' *)
  37.  
  38.   VAR NSize    : CARDINAL;
  39.   BEGIN
  40.     WriteS (f, 'Statistik');                    WriteNl (f);
  41.     WriteS (f, '-------------------');                WriteNl (f);
  42.     WriteS (f, 'Terminals   : '); 
  43.        WriteI (f, MAXTerm-MINTerm+1, 5);            WriteNl (f);
  44.     WriteS (f, 'Nonterminals: '); 
  45.        WriteI (f, MAXNonTerm-MINNonTerm+1, 5);            WriteNl (f);
  46.     WriteS (f, 'Productions : '); WriteI (f, ProdCount, 5);    WriteNl (f);
  47.     WriteS (f, 'Prod (Bytes): '); WriteI (f, ProdIndex*TSIZE (WORD), 5); 
  48.                                 WriteNl (f);
  49.     WriteS (f, 'Items       :' ); WriteI (f, ItemIndex, 6);    WriteNl (f);
  50.     WriteS (f, 'LR(0)-States: '); WriteI (f, StateIndex, 5);    WriteNl (f);
  51.     WriteS (f, 'ReadStates  : '); 
  52.        WriteI (f, LastReadState-FirstReadState+1, 5);        WriteNl (f);
  53.  
  54.     WriteNl (f);
  55.  
  56.     WriteS (f, 'Base        : '); WriteI (f, (LastReadState+1)*2, 5); WriteNl (f);
  57.     WriteS (f, 'NBase       : '); WriteI (f, (LastReadState+1)*2, 5); WriteNl (f);
  58.     WriteS (f, 'Default     : '); WriteI (f, (LastReadState+1)*2, 5); WriteNl (f);
  59.  
  60.     WriteS (f, 'Terminals   : '); WriteI (f, (TableSize+1)*4, 5); 
  61.       WriteI (f, (Filling*100+TableSize DIV 2) DIV TableSize, 4);
  62.       WriteS (f, '%'); WriteNl (f);
  63.  
  64.     NSize := NTableSize - LastTerminal;
  65.     WriteS (f, 'Nonterminals: '); WriteI (f, NSize*2, 5);
  66.       WriteI (f, (NFilling*100+NSize DIV 2) DIV NSize, 4);
  67.       WriteS (f, '%'); WriteNl (f);
  68.  
  69.     WriteS (f, 'Length      : '); 
  70.       WriteI (f, (LastReduceState-FirstReduceState+1)*2, 5); WriteNl (f);
  71.  
  72.     WriteS (f, 'Left        : '); 
  73.       WriteI (f, (LastReduceState-FirstReduceState+1)*2, 5); WriteNl (f);
  74.  
  75.     WriteS (f, 'Continuation: '); 
  76.       WriteI (f, (LastReadState+1)*2, 5); WriteNl (f);
  77.  
  78.     WriteS (f, 'FinalToProd : '); 
  79.       WriteI (f, (LastReadNonTermState-FirstReadTermState+1)*2, 5); WriteNl (f);
  80.  
  81.     WriteS (f, 'Cpu-Time [ms]' ); WriteI (f, CpuTime (), 6); WriteNl (f);
  82.  
  83.     WriteS (f, 'Memory used  ' ); WriteI (f, MemoryUsed, 6); WriteNl (f);
  84.   END WriteInfo;
  85.  
  86. END Infos.
  87.